<?php

class preciosxmodelos extends Basepreciosxmodelos
{
    //Ddatos antiguos del Objeto
    protected $id_old;
    protected $modelos_old;
    protected $listadeprecios_old;
    protected $precio_old;    
    protected $iva_old;
    //
    //Metodos Geters
     public function getmodelos_old(){
         return modelosPeer::retrieveByPK($this->modelos_old);
     }
     public function getListadeprecios_old(){
         return listadepreciosPeer::retrieveByPK($this->listadeprecios_old);
     }
     public function getPrecio_old(){
         return $this->precio_old;
     }
     public function getIva_old(){
         return $this->iva_old;
     }
    //
    //reescritura de las funciones seters
     public function setListadepreciosId($v){
         $this->listadeprecios_old = $this->getListadepreciosId();
         return parent::setListadepreciosId($v);
     }
     public function setmodelosId($v){
         $this->modelos_old= $this->getModelosId();
         return parent::setModelosId($v);
     }
     public function setprecio($v){
         $this->precio_old = $this->getPrecio();
         return parent::setPrecio($v);
     }
     public function setiva($v){
         $this->iva_old = $this->getIva();
         return parent::setIva($v);
     }
    //
    //Reescritura de los metodos save y delete
    public function save(PropelPDO $con = null){
        /*if(!$this->isNew()) {
            if ($this->isModified())
                $this->AuditarEdicion();
        }
        else
           $this->AuditarNuevo();*/
        if ($con === null) {
            $con = Propel::getConnection(preciosxmodelosPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
	}
	$con->beginTransaction();
	try {
            auditoria::AuditoriaFull($this);
           $affectedRows = parent::save($con);
           $con->commit();
           return $affectedRows;
        }
       catch (PropelException $e) {
			$con->rollBack();
			throw $e;
        }
    }
    public function delete(PropelPDO $con = null){
        //$this->AuditarBorrado();
        auditoria::AuditoriaFull($this, true);
        parent::delete($con);
    }
    //

    public function __toString(){
        return $this->getListadeprecios() ;
    }
    public function AuditarNuevo(){
         //Creando la cabecera de la auditoria
              $auditoria = new auditoria();
              $auditoria->setEvento('CREACION');
              $auditoria->setTabla('PRECIOS POR MODELOS');
              $usuario = sfContext::getInstance()->getUser();
              $auditoria->setUsuario($usuario);
              $auditoria->save();

             //Creando los Detalles para la Auditoria
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('MODELO');
                 $au_det->setValoranterior('');
                 $au_det->setNuevovalor($this->getmodelos());
                 $au_det->save();

                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('TRABAJO');
                 $au_det->setValoranterior('');
                 $au_det->setNuevovalor($this->getlistadeprecios());
                 $au_det->save();

                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('PRECIO');
                 $au_det->setValoranterior('');
                 $au_det->setNuevovalor($this->getPrecio());
                 $au_det->save();

                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('I.V.A');
                 $au_det->setValoranterior('');
                 $au_det->setNuevovalor($this->getIva());
                 $au_det->save();
        //
    }
    public function AuditarEdicion(){
            //Creando el encabezado
              $auditoria = new auditoria();
              $auditoria->setEvento('MODIFICACION');
              $auditoria->setTabla('PRECIOS POR MODELOS');
              $usuario = sfContext::getInstance()->getUser();
              $auditoria->setUsuario($usuario);
              $auditoria->save();

             //Creando los Detalles para la Auditoria
             
             //if($egresos->getDetallesDelPago()<>$this->getDetallesDelPago()){
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('MODELO');
                 $au_det->setValoranterior($this->getmodelos());
                 $au_det->setNuevovalor($this->getmodelos());
                 $au_det->save();

             //}
             //if($egresos->getImporte()<>$this->getImporte()){
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('TRABAJO');
                 $au_det->setValoranterior($this->getlistadeprecios());
                 $au_det->setNuevovalor($this->getlistadeprecios());
                 $au_det->save();
             //}
             //if($egresos->getCategoriaEgresosId() != $this->getCategoriaEgresosId()){
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('PRECIO');
                 $au_det->setValoranterior($this->getPrecio_old());
                 $au_det->setNuevovalor($this->getPrecio());
                 $au_det->save();
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('I.V.A');
                 $au_det->setValoranterior($this->getIva_old());
                 $au_det->setNuevovalor($this->getIva());
                 $au_det->save();
             //}
        
    }
    public function AuditarBorrado(){
        $auditoria = new auditoria();
              $auditoria->setEvento('BORRADO');
              $auditoria->setTabla('PRECIOS POR MODELOS');
              $usuario = sfContext::getInstance()->getUser();
              $auditoria->setUsuario($usuario);
              $auditoria->save();

             //Creando los Detalles para la Auditoria
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('MODELO');
                 $au_det->setValoranterior($this->getmodelos());
                 $au_det->setNuevovalor('');
                 $au_det->save();

                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('TRABAJO');
                 $au_det->setValoranterior($this->getlistadeprecios());
                 $au_det->setNuevovalor('');
                 $au_det->save();

                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('PRECIO');
                 $au_det->setValoranterior($this->getPrecio());
                 $au_det->setNuevovalor('');
                 $au_det->save();
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('I.V.A');
                 $au_det->setValoranterior($this->getIva());
                 $au_det->setNuevovalor('');
                 $au_det->save();
        //
    }
    public function getByPosition_old($pos)
	{
		switch($pos) {
			case 0:
				return $this->id_old;
				break;
			case 1:
				return $this->modelos_old;
				break;
			case 2:
				return $this->listadeprecios_old;
				break;
			case 3:
				return $this->precio_old;
				break;
			case 4:
				return $this->iva_old;
				break;
			default:
				return null;
				break;
		} // switch()
	}

}
